package com.cskaoyan.javase.thread._4synchronized._0introduction;

/**
 * 现在开发一个软件，模拟某影院售票窗口售票服务，要求如下：
 *      1.一共只卖100张票。
 *      2.影院有三个售票窗口，同时卖票，互不影响。
 *
 * 方式一实现多线程环境下数据的共享
 * 这种在多线程环境下，由于多线程间数据共享带来的数据失真，数据不合理的情况就是多线程的数据安全问题。
 *
 * @since 14:50
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class TypeOneImpl {
    public static void main(String[] args) {
        SellTicketThread s1 = new SellTicketThread("售票窗口1");
        SellTicketThread s2 = new SellTicketThread("售票窗口2");
        SellTicketThread s3 = new SellTicketThread("售票窗口3");
        s1.start();
        s2.start();
        s3.start();
    }
}

class SellTicketThread extends Thread {
    private static int ticketNum = 1;

    public SellTicketThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        // 不能是局部变量
        // int ticketNum = 1;
        while (ticketNum <= 100) {
            System.out.println(getName() + "卖出了第" + ticketNum + "张票!");
            ticketNum++;

        }

    }
}